Networked computers are used to transmit and fetch information to and from local sources (e.g., computers used in a business) and remote sources (e.g., enterprise services offered over the internet). The networked computers are typically owned and controlled by a wide variety of businesses, educational institutions, and individual users. The users of the networked computers can have a wide range of experience from beginner to expert levels, and can have differing levels of expertise (or lack thereof) within various categories of computer technologies. The networked computers themselves have a wide variety of configurations of both hardware and software because of the differing requirements of the owners and users of the computers and availability of hardware and software components to provision or upgrade the computer systems. Furthermore, even computers having common operating systems often have various revision levels of both application and operating systems.
Computers are often purchased from a wide variety of sources, which increases diversity of configurations. Even computers with similar ratings purchased at the same time from a vendor can have various types of hardware components installed. The drivers for these devices will differ as well, and might not work when, for example, a new operating system (or operating system upgrade) is installed. Users (beginners, novices, and experts) are tasked with the formidable challenges of, for example, determining which particular devices work in various computer systems, and finding solutions for compatibility problems, and (perhaps most importantly) avoiding the problems that come with upgrading.
Furthermore, developers are tasked with designing hardware and writing software that will work with a wide variety of computer systems having differing configurations. While developers are successful in designing products that will work with some computer systems, it is evident from anecdotal and personal experience that oftentimes compatibility problems result despite the best efforts of developers.